import tensorflow as tf  

lr = 0.001
w1 = tf.Variable(10.)
w2 = tf.Variable(8.)
def loss(x1,x2):
    return x1**2 + x2**3

for _ in range(100):  # 迭代一百次 更新一百次参数
    with tf.GradientTape(persistent=False) as tape:  # 为True则梯度可以多次使用 但最后要删除 del tape
        l = loss(w1,w2)  # 自定义损失函数
    grads = tape.gradient(l,[w1,w2])  # 求导
    grads_and_vars = zip(grads,[w1,w2])  # 导数和变量一一对应
    for grads_and_var in grads_and_vars:  
        grads_and_var[1].assign_sub(lr * grads_and_var[0])  # 自定义参数更新方法

print(w1, w2)

    
    
